//################################################################################################################

//PROGRAM TEST 2 Update 1
//		JAVA CLASS : CAMCOMPUTER , COMPUTER & COMPUTERTEST
//		LEARN ABOUT : 	INHERITANCE	(EXTENDS, SUPER, & THIS)				

//################################################################################################################		
	
class CamComputer extends Computer	{		//Membuat child class CamComputer dari parent class Computer
		//attributes
		private double CamResolution;
		
		//methods
		public double getCamResolution(){
			return CamResolution;
			}
			
		public void info(){
			super.info();
			System.out.println("RAM THIS   : " + this.ramSize);
			System.out.println("RAM SUPER  : " + super.ramSize);
			System.out.println("Camera  : " + getCamResolution());
			}
	
		public void tampil_info(){
			System.out.println("*******  make this lho");
			this.info();				//Memanggil methods info yang dimiliki child class
			System.out.println();
			System.out.println("*******  sekarang make super lho");
			super.info();				//Memanggil methods info yang dimiliki parent class
			}
		
		//constructor
		CamComputer(){
		}
		
		CamComputer(double newCam){
			CamResolution = newCam;
			}
		
		CamComputer(double newCam,String newNamaComp,int newRamSize, int newHddSize){
			super(newNamaComp,newRamSize,newHddSize);		//Menggunakan Constuctor (yang memiliki 3 variable dalam parameter) dari parent agar dapat mengakses private attributes
			CamResolution = newCam;
			}
	}
	
//=================================================================================================================

//CATATAN:
// EXTENDS MEMBUAT CHILD CLASS MEWARISI SEMUA NON-PRIVATE ATTRIBUTES DAN METHODS DARI PARENT CLASSNYA (INHERITANCE)
// WALAUPUN MNEGGUNAKAN EXTENDS, CHILD CLASS TETAP TIDAK DAPAT MENGAKSES PRIVATE ATTRIBUTES DAN PRIVATE METHODS MILIK PARENTNYA

// TEKNIK PENGGUNAAN SUPER dan THIS
//(!) SUPER dan CHILD digunakan untuk membedakan Attributes dan Methods yang namanya sama pada Parent dan Child Classnya
// SUPER() : Digunakan untuk mengakses Constructor yang dimiliki parent classnya (!) PANJANG PARAMETER HARUS SAMA (!)
// SUPER.  : Digunakan untuk mengakses Attributes yang dimiliki parent classnya (!) ATTRIBUTES YANG DIAKSES HARUS PUBLIC (!)
// THIS() : Digunakan untuk mengakses Constructor yang dimiliki child classnya (!) PANJANG PARAMETER HARUS SAMA (!)
// THIS.  : Digunakan untuk mengakses Attributes yang dimiliki child classnya
